package com.wjq.service;


import com.wjq.DTO.QuestionnaireDTO;
import com.wjq.entity.*;
import com.wjq.mapper.ChoiceMapper;
import com.wjq.mapper.ChoiceQuestionMapper;
import com.wjq.mapper.EssayQuestionMapper;
import com.wjq.mapper.QuestionnaireMapper;
import org.apache.ibatis.javassist.NotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Service
public class QuestionnaireServiceImpl implements QuestionnaireService{

    @Autowired
    QuestionnaireMapper questionnaireMapper;

    @Autowired
    ChoiceQuestionMapper choiceQuestionMapper;

    @Autowired
    ChoiceMapper choiceMapper;

    @Autowired
    EssayQuestionMapper essayQuestionMapper;

    @Override
    public List<QuestionnaireDTO> selectIndexQuestionnaireInfo() {
        return questionnaireMapper.selectIndexInfo();
    }

    @Override
    public Questionnaire selectAllInfoById(Integer id) throws NotFoundException {
        List<Question> arr = new ArrayList<>();
        Questionnaire questionnaire = questionnaireMapper.selectById(id);
        if(questionnaire == null){
            throw new NotFoundException("没有找到该问卷");
        }
        List<ChoiceQuestion> Clist = choiceQuestionMapper.queryList(id);
        //Clist.forEach(System.out::println);
        List<Choice> choices;
        for(ChoiceQuestion choiceQuestion : Clist){
            choices = choiceMapper.queryChoiceList(choiceQuestion.getId());
            choiceQuestion.setChoices(choices);
            List<String> choicesOption = new ArrayList<>();
            for(Choice c : choices){
                choicesOption.add(c.getDescription());
            }
            choiceQuestion.setOptions(choicesOption);
        }
        List<EssayQuestion> Elist = essayQuestionMapper.queryList(id);
        arr.addAll(Clist);
        arr.addAll(Elist);
        Collections.sort(arr);

        questionnaire.setQuestions(arr);
/*        System.out.println(questionnaire);*/

/*        for(Question question : arr){
            if(question instanceof ChoiceQuestion){
                System.out.println(question);
                ((ChoiceQuestion) question).getChoices().forEach(System.out::println);
            }else{
                System.out.println(question);
            }
        }*/
        return questionnaire;
    }

    @Override
    public void deleteQuestionnaire(Integer id) {
        questionnaireMapper.deleteQuestionnaire(id);
    }

    @Override
    public void recoverQuestionnaire(Integer id) {
        questionnaireMapper.recoverQuestionnaire(id);
    }

    @Override
    public void publicQuestionnaire(Integer id) {
        questionnaireMapper.publicQuestionnaire(id);
    }

    @Override
    public void unPublicQuestionnaire(Integer id) {
        questionnaireMapper.unPublicQuestionnaire(id);
    }

    @Override
    public void addQuestionnaire(Questionnaire questionnaire) { questionnaireMapper.addQuestionnaire(questionnaire);}

    @Override
    public void updateQuestionnaire(Questionnaire questionnaire) {
        questionnaireMapper.updateQuestionnaire(questionnaire);
    }

    @Override
    public void finishCountUp(Integer id) {
        questionnaireMapper.finishCountUp(id);
    }
}
